From 1799b24aa397e98f7c894d17b37c087f1ae29d95 Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date: Mon, 22 Apr 2019 18:40:25 +0200
Subject: [PATCH] FindPCAP: use pkg-config to find pcap dependencies

On UNIX, when statically built, pcap can depends on other libraries such
as -lnl-3. Add a call to pkg-config to find them and append them to
PCAP_LIBRARIES (and so to CMAKE_REQUIRED_LIBRARIES) otherwise all
check_function_exists calls will fail

Change-Id: I98361c05553738d015310fae76c17dfc08e131ff
Ping-Bug: 15713
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Reviewed-on: https://code.wireshark.org/review/32946
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Guy Harris <guy@alum.mit.edu>
[Retrieved from:
https://github.com/wireshark/wireshark/commit/1799b24aa397e98f7c894d17b37c087f1ae29d95]
---
 cmake/modules/FindPCAP.cmake | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/cmake/modules/FindPCAP.cmake b/cmake/modules/FindPCAP.cmake
index dfd80415f6..6fe2d0f4dc 100644
--- a/cmake/modules/FindPCAP.cmake
+++ b/cmake/modules/FindPCAP.cmake
@@ -38,6 +38,16 @@ find_package_handle_standard_args( PCAP DEFAULT_MSG PCAP_LIBRARY PCAP_INCLUDE_DI
 if( PCAP_FOUND )
   set( PCAP_INCLUDE_DIRS ${PCAP_INCLUDE_DIR} )
   set( PCAP_LIBRARIES ${PCAP_LIBRARY} )
+
+  # Include transitive dependencies for static linking.
+  # This requires:
+  # 1) a system with pkg-config installed
+  # 2) libpcap >= 1.9.0 with its .pc files installed
+  if( UNIX AND CMAKE_FIND_LIBRARY_SUFFIXES STREQUAL ".a" )
+    find_package( PkgConfig )
+    pkg_search_module( PC_LIBPCAP libpcap )
+    list( APPEND PCAP_LIBRARIES ${PC_LIBPCAP_LIBRARIES} )
+  endif()
 else()
   set( PCAP_INCLUDE_DIRS )
   set( PCAP_LIBRARIES )
